/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.marlboroug.articles;

import com.marlboroug.entity.Articles;
import com.marlboroug.entity.Articlesbyauthors;
import com.marlboroug.entity.Categories;
import com.marlboroug.entity.Editors;
import com.marlboroug.entity.Parameters;
import java.util.List;
import javax.ejb.Remote;


@Remote
public interface ArticlesManagerRemote {

    /** Permet de créer un Article
     * 
     * @param article Envoie un objet de type Articles
     * @return Un boolean pour confirmer la création
     */
    boolean create(Articles article);

    /** Permet de renvoyer un objet Articles en fonction d'un ID
     * 
     * @param ID_articles Un ID
     * @return Un objet de type Articles
     */
    Articles find (Long ID_articles);
    
    /** Permet de renvoyer une liste de l'ensemble des articles
     * 
     * @return Une liste d'articles
     */
    
    List<Articles> findAll ();
    
    /** Permet de retourner un objet Editors en fonction d'un ID
   * 
   * @param ID_editors Un id
   * @return Un objet Editors
   */
    Editors findEditors (Long ID_editors);
    
    /** Permet de mettre à jour un Article
     * 
     * @param article Un objet Articles
     * @return Un boolean pour confirmer la création
     */
    boolean update (Articles article);
    
    /** Permet de retourner une liste d'articles en fonction d'un nom
     * 
     * @param pattern Envoie le nom à rechercher
     * @return Une liste d'articles
     */
    List<Articles> retrieveByName (String pattern);
    
    /** Permet de retourner une liste d'articles en fonction d'une categorie
     * 
     * @param nbr Nombre de résultats
     * @param ID_categories Un ID d'une categorie
     * @return Une liste d'articles
     */
    List<Articles> ArticlesFindCategory (int nbr, Long ID_categories);
    
    /** Permet de retourner une liste d'articles en fonction d'un editeur
     * 
     * @param nbr Nombre de résultats
     * @param ID_editors Un ID d'un editeur
     * @return Une liste d'articles
     */
    List<Articles> ArticlesFindEditor (int nbr, Long ID_editors);
        
    /** Permet de retourner le paramétre
     * 
     * @return Le paramétre
     */
    List<Parameters> FindParameters ();
    
    /** Permet de renvoyer une liste des 10 articles les plus vendus
    * 
    * @return Une liste d'articles
    */
    List<Articles> findArticlesIndex ();
    
    /** Permet de retourner une liste d'articles en fonction d'un nom
     * 
     * @param pattern Envoie le nom à rechercher
     * @return Une liste d'articles
     */
    List<Articles> findCreateArticle (String pattern);
    
}
